<?php

class Solicitudes_Model_DbTable_Solicitudes extends Zend_Db_Table_Abstract {
	
	protected $_name = 'solicitudes';
	protected $_primary = 'codsolicitud';
	protected $_sequence = 'seq_solicitudes';
	//protected $_rowClass = 'App_Audit_Row';
	
	public function getSelectFetchAll($tiposolicitud,$datos,$criterio="") {
	    $select = $this->select()
	                   ->from(array("s"=>"solicitudes"),array('s.codsolicitud','s.fecha'))
	                   ->join(array("p"=>"procesos"),"p.codsolicitud=s.codsolicitud",array('p.codproceso','p.codestado'))
	                   ->join(array("pg"=>"programas"),"pg.codprograma=p.codprograma",array('pg.codprograma','pg.nombreprograma','pg.codsnies'))
	                   ->join(array("se"=>"sedes"),"se.codsede=pg.codsede",array('se.nombresede'))
	                   ->join(array('ub'=>'ubicaciongeografica'),'ub.codubicacion=pg.codubicacion',array('ub.regional ||\' - \'|| ub.nombreubicacion AS ubicacion'))
	                   ->join(array("e"=>"estadosprocesos"),"e.codestado=p.codestado",array('e.nombre AS nombreestado',))
	                   ->order("s.fecha DESC");
	    $select->setIntegrityCheck(false);
//	    $select-> joinLeft(array('sa'=>'solicitudprocesosagenda'), 'p.codproceso=sa.codproceso',null);
//        $select-> joinLeft(array('a'=>'agendas'), 'sa.codagenda=a.codagenda AND a.estado=\'AC\'',array('a.fechainicio','a.fechafin'));
	    
	    if (!empty($tiposolicitud)){
            $select->where("s.tiposolicitud=?",$tiposolicitud);
        }
        
        if (isset($datos["codsolicitud"]) && !empty($datos["codsolicitud"])){
            $select->where("s.codsolicitud=?",$datos["codsolicitud"]);
        }
        
        if (isset($datos["codestado"]) && !empty($datos["codestado"])){
            $select->where("p.codestado=?",$datos["codestado"]);
        }
	    switch($criterio){
           case "SEDE":
               $select->where ("s.codsede=?",$datos["codsede"]);
	           if (isset($datos["tipousuario"]) && $datos["tipousuario"]!="A"){
                   $select->join(array("pu"=>"programasusuario"),"pu.codprograma=p.codprograma",NULL);
	               $select->where("pu.codusuario=?",$datos["codusuario"]);
               }
           break;
           case "PAR":
               $select->join (array('pp'=>'paresproceso'),'pp.codproceso=p.codproceso','');
               $select->where ("p.codestado={$datos["codestado1"]} OR p.codestado={$datos["codestado2"]}");
               $select->where ("pp.codusuario=?",$datos["codusuario"]);
               $select->where ("pp.estadoaceptacionpar<>?",3);
           break;
           case "CONSEJERO":
               $select->where ("p.codproceso IN (SELECT pp.codproceso FROM paresproceso pp WHERE pp.codproceso=p.codproceso AND
               				    (p.codestado IN ({$datos["codestado1"]},{$datos["codestado2"]},{$datos["codestado3"]},{$datos["codestado4"]})
               				   AND pp.codusuario={$datos["codusuario"]})
               				   OR {$datos["codusuario"]}=(SELECT ip.codconsejero FROM informeproceso ip WHERE ip.codproceso=p.codproceso))
               ");
           break;
           case "VERIFICADOR":
//                              Zend_Debug::dump($datos["ubcriterio"]);
               if ($datos["subestado"]==4 || $datos["subestado"]==5 || $datos["subestado"]==6){
                        $select->where ("p.codproceso IN (SELECT pp.codproceso FROM paresproceso pp WHERE pp.codproceso=p.codproceso
               						   AND p.codestado IN ({$datos["codestado1"]},{$datos["codestado2"]}) AND pp.subestado IN (4,5,6))");
               }else{
                        $select->where ("p.codproceso IN (SELECT pp.codproceso FROM paresproceso pp WHERE pp.codproceso=p.codproceso
               						   AND p.codestado >= 4 AND pp.subestado >= {$datos["subestado"]} )");
               }
           break;
	    }
//	    Zend_Debug::dump($select->__toString());
		return $select->query()->fetchAll();
	}

    function getSolicitudIES($codinstitucion,$tiposolicitud,$actual="S"){
	    $select = $this->select ()
	                   ->where ("codinstitucion='{$codinstitucion}'")
	                   ->where ("tiposolicitud='{$tiposolicitud}'")
	                   ->where ("actual='{$actual}'");
//	            echo $select->__toString();
	 return $select->query()->fetch();
    }
}//fin de la clase

